import {Mesh} from '../model/Mesh.ts'

// n ，m 三角形的个数，越少，圆球 越尖锐
export const d3_shpere_color = (r=1, n=20, m=10) =>{
  // [0, 2PI]
  const vertexes = []
  const indices = []
  const colors = []
  // 使用纹理
  const texCoords = []
  for (let y=0;y<=m;y++){
    for (let x= 0;x<n;x++){
      const u = x / n
      const v = y / m
      const theta = u * Math.PI * 2
      const phi = v * Math.PI
      const py = Math.cos(phi) * r
      const px = Math.sin(phi) * Math.cos(theta) * r
      const pz = Math.sin(phi) * Math.sin(theta) * r
      colors.push(Math.random(), Math.random(), Math.random(), 1)
      // texCoords.push(1-u, v)
      vertexes.push(px,py,pz)
    }
  }

  for(let x=0;x<n;x++){
    for(let y=0;y<m;y++){
      // (x, y+1), (x+1, y+1)
      // (x,y) (x+1, y)
      // 穷举 所有的四边形

      // 三角形
      indices.push(
        x + y * (n+1),
        x+1 + y * (n+1),
        x + (y+1) * (n+1)
      )
      // 三角形
      indices.push(
        x+1 + y * (n+1),
        x + (y+1) * (n+1),
        x+1 + (y+1) * (n+1),
      )
    }
  }

  return new Mesh({vertexes, indices, colors})
  // 使用纹理
  // return new Mesh({vertexes, indices, texCoords})
}
